home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
351-375
/
disk_363
/
wo
/
wo1.0e.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
39KB
|
1,489 lines
/*
*
* Wo1.0e.c
*
* Aztec C V3.4:
* cc (+Irad:inlcude.pre) +C +D +L -E140 wo.c
* ln wo.o -lml32 -lcl32
*
*/
/*
* inlcudes and defines
*/
/* I compile with pre-compiled include-files !
#include <stdio.h>
#include <ctype.h>
#include <functions.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <devices/timer.h>
#include <time.h>
#include <devices/input.h>
#include <libraries/dos.h>
#include <graphics/gfxmacros.h>
*/
#define ABOUT " Wo 1.0e © Heinzel 2.3.90 "
#define MX IntuitionBase->ActiveScreen->MouseX
#define MY IntuitionBase->ActiveScreen->MouseY
#define a_w IntuitionBase->ActiveWindow
#define MAXLEN 255
#define KEYS sizeof(key)/sizeof(UBYTE) /* for codiere()/decodiere() */
#define MAXI 500 /* maximal number of records (can be modified, of course) */
/*
* declarations
*/
UBYTE key[] = {0,1,2,3,4,5,6,7,8,9,}; /* for password */
struct Daten
{
char such_begriff[32];
char name[32];
char strasse[32];
char ort[32];
char tel[32];
};
struct Daten *person[MAXI];
int zaehler = 0; /* for person[zaehler] */
int vergleich(); /* for QuickSort() */
FILE *faus, *fopen();
struct FileHandle *fein;
struct FileLock *lock;
struct FileInfoBlock *eintrag;
char *platz;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
long DosBase=0, j, k;
long i=0;
BOOL anderung = FALSE;
/* has actual file been changed and must be saved ? */
struct IntuiMessage *message;
ULONG class; USHORT code;
struct MsgPort *timerport = NULL; /* for timer-clock */
long openerror = 1;
struct timerequest timereq;
ULONG zmem, tt =0;
long diff = 0;
struct Preferences prefs; /* for movemouse() */
struct RastPort *rp;
struct Screen *screen;
struct Window *w, *offne_win, *list_win, *input_win, *sesam_win;
char liste[MAXI][33]; /* for list() */
char Date_Buffer[10] ;
UBYTE DefString[30];
UBYTE Undo [30];
struct StringInfo TexString = /* for text in text-gadgets */
{DefString,Undo,0,30,0,0,0,0, 0,0, NULL, 0, NULL};
UBYTE DefString2[30] = ":wo/wo.file"; /* in offne_file-window */
UBYTE Undo2[30];
struct StringInfo TexString2 =
{DefString2,Undo2,0,30,0,0,0,0, 0,0, NULL, 0, NULL};
UBYTE DefString3[30]; /* in input-window */
UBYTE Undo3[30];
struct StringInfo Input_TexString =
{DefString3,Undo3,0,30,0,0,0,0, 0,0, NULL, 0, NULL};
UBYTE DefString4[70]; /* in sesam-window */
UBYTE Undo4[70];
struct StringInfo sesam_TexString =
{DefString4,Undo4,0,70,0,0,0,0, 0,0, NULL, 0, NULL};
char alert1[] = {"\0\170\26 W r o n g P a s s w o r d , S u c k e r !\0\0"};
/*
* Borders
*/
SHORT Pairs1[] = /* from Text Gadget Border */
{38,36, 250,36, 250,51, 38,51, 38,36 };
SHORT Pairs3[] = /* ... in offne_file */
{21,5, 231,5, 231,21, 21,21, 21,5 };
SHORT Pairs4[] = /* ... in input_window */
{38,16, 250,16, 250,31, 38,31, 38,16 };
struct Border StrBorder5 =
{-17,-11, 1,0,JAM1, 5, Pairs4, NULL };
struct Border StrBorder4 =
{0,0, 1,0,JAM1, 5, Pairs4, NULL };
struct Border StrBorder3 =
{0,0, 1,0,JAM1, 5, Pairs3, NULL };
struct Border StrBorder =
{0,0, 1,0,JAM1, 5, Pairs1, NULL };
/*
* IntuiTexts
*/
BOOL ergebnis = FALSE;
struct IntuiText postext1 =
{0,1,JAM2,9,4,NULL,(UBYTE *)"Yo ",NULL };
struct IntuiText negtext1 =
{0,1,JAM2,9,4,NULL,(UBYTE *)" NO !",NULL };
struct IntuiText text=
{0,1,JAM1,9,6,NULL,(UBYTE *)" No reords ! "};
struct IntuiText text2=
{0,1,JAM1,9,6,NULL,(UBYTE *)NULL};
struct IntuiText text3=
{0,1,JAM1,6,6,NULL,(UBYTE *)" No current record !"};
struct IntuiText text4=
{0,1,JAM1,9,6,NULL,(UBYTE *)" DELETE records ?"};
struct IntuiText text5=
{0,1,JAM1,9,6,NULL,(UBYTE *)" Save modified file ?"};
struct IntuiText yo_str =
{1,0,JAM2,49,2,NULL,(UBYTE *)"Yo !",NULL };
struct IntuiText del_str =
{3,0,JAM2,1,0,0,(UBYTE *)" Del ",0};
struct IntuiText neu_str =
{3,0,JAM2,1,0,0,(UBYTE *)" New ",0};
struct IntuiText print_str =
{3,0,JAM2,1,0,0,(UBYTE *)" Print ",0};
struct IntuiText abbruch_str =
{1,0,JAM1,25,2,0,(UBYTE *)"CANCEL",0};
struct IntuiText list_str =
{3,0,JAM2,1,0,0,(UBYTE *)" List ",0};
struct IntuiText input_str =
{3,0,JAM2,1,0,0,(UBYTE *)" Input ",0};
struct IntuiText speicher_str =
{3,0,JAM2,1,0,0,(UBYTE *)" Save ",0};
struct IntuiText lade_str =
{3,0,JAM2,1,0,0,(UBYTE *)" Open ",0};
struct IntuiText edit_str =
{3,0,JAM2,1,0,0,(UBYTE *)" Edit ",0};
struct IntuiText yes_str =
{1,0,JAM1,14,2,0,NULL,0};
struct IntuiText no_str =
{1,0,JAM1,25,2,0,(UBYTE *)"Cancel",0};
struct IntuiText vor_str =
{1,0,JAM1,4,0,0,(UBYTE *)"--->>>",0};
struct IntuiText zurueck_str =
{1,0,JAM1,4,0,0,(UBYTE *)"<<<---",0};
struct IntuiText namen_str[13] =
{
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0},
{1,0,JAM2,3,1,0,NULL,0}
};
/*
* Gadgets
*/
struct Gadget yo_gad =
{NULL, 66,25,120,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&yo_str,0,0, 2, 0};
struct Gadget sesam_gad =
{&yo_gad, 26,9,200,12, GADGHCOMP, RELVERIFY, STRGADGET,
NULL, 0, NULL, 0, (APTR)&sesam_TexString, 1,0};
struct Gadget input_tex_gad =
{NULL, 45,20,200,12, GADGHCOMP, STRINGCENTER|RELVERIFY, STRGADGET,
NULL, 0, NULL, 0, (APTR)&Input_TexString, 1,0};
struct Gadget zurueck_gad =
{NULL, 74,170,54,8, GADGHBOX|GADGDISABLED,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&zurueck_str,0,0, 21, 0};
struct Gadget vor_gad =
{&zurueck_gad, 6,170,54,8, GADGHBOX|GADGDISABLED,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&vor_str,0,0, 20, 0};
struct Gadget namen_gad[13] =
{
{&vor_gad, 10, 12,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[0], 0,0,0, 0},
{&namen_gad[0], 10, 22,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[1], 0,0,1, 0},
{&namen_gad[1], 10, 32,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[2], 0,0,2, 0},
{&namen_gad[2], 10, 42,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[3], 0,0,3, 0},
{&namen_gad[3], 10, 52,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[4], 0,0,4, 0},
{&namen_gad[4], 10, 62,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[5], 0,0,5, 0},
{&namen_gad[5], 10, 72,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[6], 0,0,6, 0},
{&namen_gad[6], 10, 82,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[7], 0,0,7, 0},
{&namen_gad[7], 10, 92,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[8], 0,0,8, 0},
{&namen_gad[8], 10,102,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[9], 0,0,9, 0},
{&namen_gad[9], 10,112,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[10],0,0,10,0},
{&namen_gad[10],10,122,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[11],0,0,11,0},
{&namen_gad[11],10,132,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[12],0,0,12,0}
};
struct Gadget no_gad = /* in offne_file-window */
{NULL, 20,27,100,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&no_str,0,0, 3, 0};
struct Gadget yes_gad =
{&no_gad, 140,27,100,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&yes_str,0,0, 2, 0};
struct Gadget file_gad =
{&yes_gad, 26,9,200,12, GADGHCOMP, STRINGCENTER|RELVERIFY, STRGADGET,
NULL, 0, NULL, 0, (APTR)&TexString2, 1,0};
struct Gadget del_gad =
{NULL, 119,140,42,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&del_str,0,0, 10, 0};
struct Gadget neu_gad =
{&del_gad, 161,140,42,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&neu_str,0,0, 9, 0};
struct Gadget edit_gad =
{&neu_gad, 127,126,50,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&edit_str,0,0, 8, 0};
struct Gadget lade_gad =
{&edit_gad, 177,126,50,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&lade_str,0,0, 7, 0};
struct Gadget speicher_gad =
{&lade_gad, 227,126,50,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&speicher_str,0,0, 6, 0};
struct Gadget input_gad =
{&speicher_gad, 69,126,58,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&input_str,0,0, 5, 0};
struct Gadget list_gad =
{&input_gad, 11,126,58,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&list_str,0,0, 4, 0};
struct Gadget abbruch_gad =
{&list_gad, 12,140,99,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&abbruch_str,0,0, 3, 0};
struct Gadget print_gad =
{&abbruch_gad, 203,140,74,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
NULL,0,&print_str,0,0, 2, 0};
struct Gadget tex_gad =
{&print_gad, 45,40,200,12, GADGHCOMP, STRINGCENTER|RELVERIFY, STRGADGET,
NULL, 0, NULL, 0, (APTR)&TexString, 1,0};
struct Requester request = /* look at function schein-request() */
{NULL,-1,-1,1,1,0,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL};
/*
* Windows
*/
struct NewWindow nw =
{
40,20,291,176, 0,1,
MOUSEBUTTONS|GADGETDOWN|GADGETUP|RAWKEY|CLOSEWINDOW,
ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE,
&tex_gad,
NULL,
(UBYTE *) ABOUT,
NULL,
NULL,
0,0,0,0,
WBENCHSCREEN
};
struct NewWindow nw3 = /* name-window */
{
345,20,260,55, 0,1,
GADGETDOWN|GADGETUP,
ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH,
&file_gad,
NULL,
NULL,
NULL,
NULL,
0,0,0,0,
WBENCHSCREEN
};
struct NewWindow nw4 = /* list-window */
{
345,5,145,194, 0,1,
GADGETDOWN|GADGETUP|CLOSEWINDOW|MOUSEBUTTONS,
ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE,
&namen_gad[12],
NULL,
(UBYTE *) " List ",
NULL,
NULL,
0,0,0,0,
WBENCHSCREEN
};
struct NewWindow nw5 = /* input-window */
{
345,20,291,50, 0,1,
GADGETDOWN|GADGETUP|CLOSEWINDOW,
ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE,
&input_tex_gad, /* Gad */
NULL,
NULL,
NULL,
NULL,
0,0,0,0,
WBENCHSCREEN
};
struct NewWindow nw6 = /* sesam-window */
{
345,80,260,55, 0,1,
GADGETUP|GADGETDOWN,
ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH,
&sesam_gad,
NULL,
(UBYTE *) " password: ",
NULL,
NULL,
0,0,0,0,
WBENCHSCREEN
};
struct NewWindow new_inf_win = /* info_window */
{0,90,640,28, 1,2, NULL, ACTIVATE,
NULL,NULL,NULL, NULL,
NULL, 20,20,640,256, WBENCHSCREEN
};
/*
* master control program
*/
main(argc,argv)
short argc;
char *argv[];
{
if( IntuitionBase->ActiveScreen->Width<639 ) ende(7);
if(!(DosBase=(long)OpenLibrary("dos.library",0))) ende(1);
if(!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0))) ende(2);
if(!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0))) ende(3);
GetPrefs(&prefs,(long)sizeof(struct Preferences));
if(!(timerport = CreatePort("Timer Port",0L))) ende(4);
if((openerror = OpenDevice(TIMERNAME,UNIT_VBLANK,(char *)&timereq,0L))!=0) ende(4);
if(argc>1) strcpy(DefString2,argv[1]);
draw();
start_timer();
zmem = time(tt)-diff;
print_time(diff);
for(i=0;i<MAXI;i++) person[i] = 0;
offne_file(0);
s();
loop(); /* THE main-loop */
} /* End main() */
loop()
{
for(;;)
{
Wait((1<<w->UserPort->mp_SigBit) | (1<<timerport->mp_SigBit));
while(message = (struct IntuiMessage *)GetMsg(w->UserPort))
{
class = message->Class;
code = message->Code;
ReplyMsg(message);
switch (class)
{
case CLOSEWINDOW: ende(0);
case GADGETUP: do_gadget_text(message, w); break;
case GADGETDOWN: do_gadgets_bool(message, w); break;
case RAWKEY: if(code==80) ActivateGadget(&tex_gad,w,NULL); break;
} /* End switch */
} /* End while1 */
while(GetMsg(timerport))
{start_timer();
diff=time(tt)-zmem;
print_time(diff);
} /* end while2 */
} /* end for */
} /* End schleife() */
do_gadget_text (mes, win) /* execute text-gadget */
struct IntuiMessage *mes;
struct Window *win;
{
struct Gadget *igad;
int gadgid;
igad = (struct Gadget *) mes->IAddress;
gadgid = igad->GadgetID;
switch(gadgid)
{
case 1: suchen(DefString); break;
};
}
do_gadgets_bool (mes, win) /* execute BOOL-gadgets */
struct IntuiMessage *mes;
struct Window *win;
{
struct Gadget *igad;
int gadgid;
igad = (struct Gadget *) mes->IAddress;
gadgid = igad->GadgetID;
switch(gadgid)
{
case 2: drucke(DefString); break;
case 3: ende(0);
case 4: list(); break;
case 5: input(0); break; /* = new input */
case 7: if((anderung==TRUE)&&(zaehler>0)) /*load*/
{movemouse(190,38);
ergebnis = AutoRequest(NULL,&text5,&postext1,&negtext1,NULL,NULL,260,50);
if(ergebnis==TRUE) offne_file(1);
/* if file has been saved: Request: Save ? */
}
offne_file(0); break;
case 6: if(zaehler==0)
{movemouse(150,33);
ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
movemouse(w->LeftEdge+150,w->TopEdge+130); break;}
offne_file(1); break; /*save*/
case 8: input(1); break; /* = edit record */
case 9: neu(); break;
case 10: del(); break;
};
}
/*
* the functions
*/
status(was) /* shows status */
char *was;
{
Move(rp,16,25); Text(rp,was,25);
}
s()
{status("Click gadget ... ");}
de()
{Delay(50L); s();}
schein_request(an) /* Requester: mouse-clicks won't be buffered ! */
int an; /* 1 = onn, 0 = off */
{
if(an==1)
{InitRequester(&request);
Request(&request,w);}
else
EndRequest(&request,w);
}
draw() /* Opening the main-window */
{
if(!(w = (struct Window *)OpenWindow(&nw))) ende(5);
rp = w->RPort;
SetRast(rp,2);
SetAPen(rp,2);SetBPen(rp,1);Move(rp,16,12); Text(rp,"Status:",7);
SetAPen(rp,0);
RectFill(rp,12,140,110,151); /* blue background at CANCEL-gadget */
SetAPen(rp,3);SetBPen(rp,1);
Move(rp,16,68); Text(rp," Number of records: ",20);
Move(rp,16,85); Text(rp," Name:",7);
Move(rp,16,95); Text(rp,"Street:",7);
Move(rp,16,105);Text(rp," Town:",7);
Move(rp,16,115);Text(rp," Phone:",7);
SetAPen(rp,1);SetBPen(rp,2);
DrawBorder(rp,&StrBorder,0,0);
RefreshGadgets(&tex_gad,w,NULL); /* draw gadgets */
print_anzahl();
}
drucke(wen) /* print address */
char *wen;
{
char john[30];
UBYTE *reg2 = 12570624;
UBYTE a;
a = *reg2&1;
if(zaehler==0) {movemouse(150,33);
ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
goto close_it;}
for(i=0;i<zaehler;i++)
{ if( my_strcmp(wen,person[i]->such_begriff)==NULL)
{
strcpy(john," Print <");
strcat(john,person[i]->such_begriff);
strcat(john,"> ? ");
(UBYTE *) text2.IText = (UBYTE *)john;
movemouse((strlen(john)*10)-50,38);
ergebnis = AutoRequest(NULL,&text2,&postext1,&negtext1,NULL,NULL,strlen(john)*10+5,50);
if(ergebnis == FALSE) goto close_it;
if(a==1) {status("Printer off_line ! "); de(); goto close_it; }
if((faus=fopen("par:","w"))==NULL)
{status("No parallel.device ! "); de(); return(0);}
status("Printing address. ");
fputs(person[i]->name,faus);
fputs("\n",faus);
fputs(person[i]->strasse,faus);
fputs("\n",faus);
fputs(person[i]->ort,faus);
fputs("\n",faus);
fputs(person[i]->tel,faus);
fputs("\n\n",faus);
if(faus) fclose(faus);
s();
return(1);
}
}
movemouse(150,33);
ergebnis = AutoRequest(NULL,&text3,&postext1,&postext1,NULL,NULL,200,50);
close_it: movemouse(w->LeftEdge+150,w->TopEdge+130); return(0);
} /* end drucke() */
open_file(welches) /* read data-file into memory */
UBYTE welches[30];
{
register char *z, *hilf;
long number;
status("Opening File ! ");
if((eintrag = AllocMem(sizeof(struct FileInfoBlock),0L))==NULL) ende(6);
if(( lock = (struct FileLock *) Lock(welches,ACCESS_READ))==NULL)
{kein_wofile(); return(0);}
if(Examine(lock,eintrag)==NULL)
{kein_wofile(); return(0);}
UnLock(lock);
if((platz = AllocMem(eintrag->fib_Size,0L))==NULL)
{kein_wofile(); ende(6);}
if((fein=Open(welches,MODE_OLDFILE))==NULL)
{kein_wofile(); return(0);}
number = Read(fein,platz,eintrag->fib_Size);
if(fein) Close(fein);
get_sesam();
if(DefString4[0]!=0) {compute(DefString4);
decodiere(platz,number);
strcpy(DefString4,"\0"); }
SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
strcpy(DefString,"\0");
RefreshGadgets(&tex_gad,w,NULL);
if(zaehler>0)
{ for(i=0;i<zaehler;i++)
{ if(person[i]) FreeMem(person[i],sizeof(struct Daten));
person[i] = 0;
}
}
for(i=0;i<MAXI;i++) person[i] = 0;
zaehler = 0;
/* scan and modify in memory */
z = platz; /* = begin of data in memory */
if(*z!='{') mach_reset();
for(;;)
{
for(;*z!='~' && *z!='{';z++) ;
if(*z=='~') break; /* end of list -> break */
if((person[zaehler] = AllocMem(sizeof(struct Daten),0L))==NULL) break;
z+=1;
hilf = z;
for(;*z!='[';z++) ;
*(z-1) = '\0';
strcpy(person[zaehler]->such_begriff,hilf);
z+=1;
hilf = z;
for(;*z!='[';z++) ;
*(z-1) = '\0';
strcpy(person[zaehler]->name,hilf);
z+=1;
hilf = z;
for(;*z!='[';z++) ;
*(z-1) = '\0';
strcpy(person[zaehler]->strasse,hilf);
z+=1;
hilf = z;
for(;*z!='[';z++) ;
*(z-1) = '\0';
strcpy(person[zaehler]->ort,hilf);
z+=1;
hilf = z;
for(;*z!=']';z++) ;
*(z) = '\0';
strcpy(person[zaehler]->tel,hilf);
zaehler += 1;
}
anderung = FALSE;
if(eintrag) FreeMem(eintrag,sizeof(struct FileInfoBlock));
if(platz) FreeMem(platz,eintrag->fib_Size);
print_anzahl();
RefreshGadgets(&tex_gad,w,NULL);
s();
} /* End open_file() */
kein_wofile() /* error during read-in data into memory */
{
if(lock) {UnLock(lock); lock = NULL;}
if(platz) {FreeMem(platz,eintrag->fib_Size); platz = NULL;}
if(eintrag) {FreeMem(eintrag,sizeof(struct FileInfoBlock)); eintrag=NULL;}
status("File - Error ! "); Delay(50L);
status("Load - Mode ... ");
}
mach_reset() /* wrong password: Good By ! */
{
SetTaskPri(FindTask(0),127);
DisplayAlert(RECOVERY_ALERT,&alert1[0],50);
Forbid(); Disable();
sys_info(3,"Reset your system !!!",200);
reset();
}
reset() /* wrong password: reset ! */
{
#asm
move $0,34
#endasm
}
my_strcmp(t1,t2)
char *t1,*t2;
{
register unsigned char c1, c2;
register COUNT count;
for(count=0; count<=strlen(t1); count++)
{
c1=t1[count];
c2=t2[count];
if(c1>180) c1=c1-131;
if(c2>180) c2=c2-131;
if(c2>=65 && c2<=90) c2 +=32;
if(c1>=65 && c1<=90) c1 +=32;
if(c1<c2) return(-1);
if(c1>c2) return(1);
}
return(0);
}
suchen(wen) /* searches for term and and gives you suitable address */
char *wen;
{
for(i=0;i<zaehler;i++)
{ if( my_strcmp(wen,person[i]->such_begriff)==NULL)
{ SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
Move(rp,80,85); Text(rp,person[i]->name,strlen(person[i]->name));
Move(rp,80,95); Text(rp,person[i]->strasse,strlen(person[i]->strasse));
Move(rp,80,105); Text(rp,person[i]->ort,strlen(person[i]->ort));
Move(rp,80,115); Text(rp,person[i]->tel,strlen(person[i]->tel));
return(1);}
}
status("No matching record ! "); de(); return(0);
} /* end suchen() */
start_timer() /* initializing of timer-clock */
{
timereq.tr_time.tv_secs = 0;
timereq.tr_time.tv_micro = 999500;
timereq.tr_node.io_Command = TR_ADDREQUEST;
timereq.tr_node.io_Flags = 0;
timereq.tr_node.io_Error = 0;
timereq.tr_node.io_Message.mn_ReplyPort = timerport;
SendIO((char *) &timereq.tr_node);
}
print_time(diff) /* prints time on screen */
long diff;
{
char s[8];
long h,m;
h=diff/3600;
diff -=h*3600;
m=diff/60;
diff -=m*60;
if(h<10)
{s[0] = '0'; s[1] = '0'+h;}
else {s[0] = '0'+(h/10); s[1] = '0'+(h-((h/10)*10));}
s[2] = ':';
if(m<10)
{s[3] = '0'; s[4] = '0'+m;}
else {s[3] = '0'+(m/10); s[4] = '0'+(m-((m/10)*10));}
s[5] = ':';
if(diff<10)
{s[6] = '0'; s[7] = '0'+diff;}
else {s[6] = '0'+(diff/10); s[7] = '0'+(diff-((diff/10)*10));}
s[8] = '\0';
Move(rp,210,12);
Text(rp,&s,8L);
}
offne_file(knoff) /* load/save a file */
short knoff;
{
struct RastPort *rp_name;
struct IntuiMessage *message2;
ULONG class2; USHORT code2;
struct Gadget *igad2;
int gadgid2;
schein_request(1); /*an*/
if(knoff==1) { status("Save - Mode ... ");
nw3.Title = (UBYTE *)" File-Name (Save)";
yes_str.IText = (UBYTE *)" Save";}
if(knoff==0) { status("Load - Mode ... ");
nw3.Title = (UBYTE *)" File-Name (Load)";
yes_str.IText = (UBYTE *)" Load";}
if(!(offne_win = (struct Window *)OpenWindow(&nw3))) {sys_info(3,"No List-WINDOW !",0); return(0);}
rp_name = offne_win->RPort;
SetRast(rp_name,2);
SetAPen(rp_name,0);
movemouse(a_w->LeftEdge+230,a_w->TopEdge+42);
RectFill(rp_name,20,27,119,38);
RectFill(rp_name,140,27,239,38);
RefreshGadgets(&file_gad,offne_win,NULL);
DrawBorder(rp_name,&StrBorder3,0,0);
ActivateGadget(&file_gad,offne_win,NULL);
for(;;)
{
Wait(1<<offne_win->UserPort->mp_SigBit);
while(message2 = (struct IntuiMessage *)GetMsg(offne_win->UserPort))
{
class2 = message2->Class;
code2 = message2->Code;
ReplyMsg(message2);
igad2 = (struct Gadget *) message2->IAddress;
gadgid2 = igad2->GadgetID;
switch (class2)
{
case GADGETDOWN:
switch(gadgid2)
{
case 2: if(knoff==0) {if(open_file(DefString2)!=0) goto sense; } /*yes */
if(knoff==1) {if(speichern(DefString2)!=0) goto sense; }
ActivateGadget(&file_gad,offne_win,NULL); break;
case 3: goto sense; break; /* no */
};
case GADGETUP:
switch(gadgid2)
{case 1: if(knoff==0) {if(open_file(DefString2)!=0) goto sense; } /*yes */
if(knoff==1) {if(speichern(DefString2)!=0) goto sense; }
ActivateGadget(&file_gad,offne_win,NULL); break;
};
};
} /* end while */
} /* end for */
sense:
schein_request(0); /*off*/
if(offne_win) {CloseWindow(offne_win); offne_win=NULL;
s();
movemouse(w->LeftEdge+150,w->TopEdge+130);
}
} /* End offne_file() */
int vergleich(a,b) /* for quicksort() */
char *a, *b;
{
return(my_strcmp(a,b));
}
list() /* shows you list of terms (alphabetical), click them ! */
{
struct RastPort *rp_list;
struct IntuiMessage *message2;
ULONG class2; USHORT code2;
struct Gadget *igad2;
int gadgid2;
register int j=0, akt=0;
schein_request(1); /*an*/
status("List - Mode ... ");
for(i=0;i<MAXI;i++) strcpy(liste[i],"\0");
if(zaehler==0) {movemouse(150,33);
ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
goto close_it_2;}
if(!(list_win = (struct Window *)OpenWindow(&nw4))) {sys_info(3,"No List-WINDOW !",0); return(0);}
rp_list = list_win->RPort;
SetRast(rp_list,2);
SetAPen(rp_list,3); SetBPen(rp_list,1); SetDrMd(rp_list,JAM2);
movemouse(a_w->LeftEdge+30,a_w->TopEdge+187);
for(i=0;i<zaehler;i++)
strcpy(liste[i],person[i]->such_begriff);
qsort(liste,zaehler,33,vergleich);
j = ((zaehler-1)/13); /* how many whole pages ? (13 records/page possible) */
if(zaehler<=13)
{ for(i=0;i<zaehler;i++) (char *)namen_str[i].IText = liste[i];
Move(rp_list,6,156); Text(rp_list,"(end) ",6);
for(i=12;i>=zaehler;i--) namen_gad[i].Flags |= GADGDISABLED;
}
else {for(i=0;i<13;i++) (char *)namen_str[i].IText = liste[i];
OnGadget(&vor_gad,list_win,NULL); akt=0;
Move(rp_list,6,156); Text(rp_list,"(more)",6);}
col(akt,-2);
sprintf(Date_Buffer,"%d/%d",akt+1,j+1); Move(rp_list,a_w->Width-14-(strlen(Date_Buffer)*7),156); Text(rp_list,Date_Buffer,strlen(Date_Buffer));
for(;;)
{
Wait(1<<list_win->UserPort->mp_SigBit);
while(message2 = (struct IntuiMessage *)GetMsg(list_win->UserPort))
{
class2 = message2->Class;
code2 = message2->Code;
ReplyMsg(message2);
igad2 = (struct Gadget *) message2->IAddress;
gadgid2 = igad2->GadgetID;
switch (class2)
{
case MOUSEBUTTONS: if(code2==MENUDOWN) goto close_it_1; break;
case CLOSEWINDOW: goto close_it_1;
case GADGETDOWN:
if(gadgid2>=0 && gadgid2<=12) {such(gadgid2);col(akt,gadgid2);} break;
case GADGETUP:
if(gadgid2>=0 && gadgid2<=12) {RefreshGadgets(&namen_gad[12],list_win,NULL);}
if(gadgid2==20) /*go on*/
{akt = akt+1;
for(i=0;i<13;i++) (char *)namen_str[i].IText = liste[(akt*13)+i];
SetRast(rp_list,2);
OnGadget(&zurueck_gad,list_win,NULL);
if(akt==j) { for(i=12;i>=zaehler-(j*13);i--) namen_gad[i].Flags |= GADGDISABLED;
vor_gad.Flags |= GADGDISABLED;
Move(rp_list,6,156); Text(rp_list,"(end) ",6);}
else {Move(rp_list,6,156); Text(rp_list,"(more)",6);}
sprintf(Date_Buffer,"%d/%d",akt+1,j+1); Move(rp_list,a_w->Width-14-(strlen(Date_Buffer)*7),156); Text(rp_list,Date_Buffer,strlen(Date_Buffer));
col(akt,-1);
}
if(gadgid2==21) /*go back*/
{ for(i=12;i>=zaehler-(j*13);i--) namen_gad[i].Flags &= ~GADGDISABLED;
akt = akt-1;
for(i=0;i<13;i++) (char *)namen_str[i].IText = liste[(akt*13)+i];
SetRast(rp_list,2);
OnGadget(&vor_gad,list_win,NULL);
Move(rp_list,6,156); Text(rp_list,"(more)",6);
if(akt==0) zurueck_gad.Flags |= GADGDISABLED;
sprintf(Date_Buffer,"%d/%d",akt+1,j+1); Move(rp_list,a_w->Width-14-(strlen(Date_Buffer)*7),156); Text(rp_list,Date_Buffer,strlen(Date_Buffer));
col(akt,-1);
}
};/* switch class2 */
} /* end while */
} /* end for */
close_it_1:
for(i=12;i>=zaehler-(j*13);i--) namen_gad[i].Flags &= ~GADGDISABLED;
zurueck_gad.Flags |= GADGDISABLED;
vor_gad.Flags |= GADGDISABLED;
if(list_win) {CloseWindow(list_win); list_win=NULL;}
close_it_2:
schein_request(0); /*aus*/
s();
movemouse(w->LeftEdge+150,w->TopEdge+130);
} /* end list() */
such(a)
short a;
{
strcpy(DefString,(char *)namen_str[a].IText);
RefreshGadgets(&tex_gad,w,NULL);
suchen((char *)namen_str[a].IText);
}
col(page,num) /* changes color of activated tracing term */
short page;
short num;
{
static short st_page=-1;
static short st_num=-1;
short i;
if(num==-2)
{ for(i=0;i<=12;i++) {namen_str[i].FrontPen=1; namen_str[i].BackPen=2;}
st_page=-1; st_num=-1; }
if(num==-1)
{ if(st_page==page) {namen_str[st_num].FrontPen=2; namen_str[st_num].BackPen=1;}
else for(i=0;i<=12;i++) {namen_str[i].FrontPen=1; namen_str[i].BackPen=2;} }
if(num<0) RefreshGadgets(&namen_gad[12],list_win,NULL);
if(num>=0)
{ st_page=page; st_num=num;
for(i=0;i<=12;i++) {namen_str[i].FrontPen=1; namen_str[i].BackPen=2;}
namen_str[st_num].FrontPen=2; namen_str[st_num].BackPen=1; }
} /* end col() */
input(edit) /* new input (edit=0), modify record (edit=1) */
short edit;
{
struct RastPort *rp_input;
struct IntuiMessage *message2;
ULONG class2; USHORT code2;
struct Gadget *igad2;
int gadgid2;
short what = 1;
schein_request(1); /*an*/
if(edit==1)
{
status("Edit - Mode ... ");
for(i=0;i<zaehler;i++)
if( my_strcmp(DefString,person[i]->such_begriff)==NULL)
{strcpy(DefString3,person[i]->such_begriff);
nw5.Title = (UBYTE *)" Edit "; goto weiter;}
movemouse(150,33);
ergebnis = AutoRequest(NULL,&text3,&postext1,&postext1,NULL,NULL,200,50);
goto close_in;
}
if(edit==0) {nw5.Title = (UBYTE *)" Input ";
status("Input - Mode ... ");}
weiter:
if(!(input_win = (struct Window *)OpenWindow(&nw5))) { sys_info(3,"No Input/Edit-WINDOW !",0); return(0);}
rp_input = input_win->RPort;
SetRast(rp_input,2); movemouse(a_w->LeftEdge+10,a_w->TopEdge+5);
DrawBorder(rp_input,&StrBorder4,0,0);
SetAPen(rp_input,1); SetBPen(rp_input,2); SetDrMd(rp_input,JAM2);
Move(rp_input,5,10); Text(rp_input,"Tracing term: ",16);
if(edit==0) {strcpy(DefString,"\0"); RefreshGadgets(&tex_gad,w,NULL);
strcpy(DefString3,"\0");
SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);}
for(;;)
{
RefreshGadgets(&input_tex_gad,input_win,NULL);
ActivateGadget(&input_tex_gad,input_win,NULL);
Wait(1<<input_win->UserPort->mp_SigBit);
while(message2 = (struct IntuiMessage *)GetMsg(input_win->UserPort))
{
class2 = message2->Class;
code2 = message2->Code;
ReplyMsg(message2);
igad2 = (struct Gadget *) message2->IAddress;
gadgid2 = igad2->GadgetID;
switch (class2)
{
case CLOSEWINDOW: goto close_in;
case GADGETDOWN:
switch(gadgid2)
{case 1: break;
};
case GADGETUP:
switch(gadgid2)
{
case 1:
if(what==1)
{
if(edit==0)
{if((person[zaehler] = AllocMem(sizeof(struct Daten),0L))==NULL) return(0);
strcpy(person[zaehler]->such_begriff,DefString3);
strcpy(DefString,DefString3);
strcpy(DefString3,"\0");
}
if(edit==1)
{
strcpy(person[i]->such_begriff,DefString3);
strcpy(DefString,DefString3);
strcpy(DefString3,person[i]->name);
}
RefreshGadgets(&tex_gad,w,NULL);
Move(rp_input,5,10); Text(rp_input,"Name/First-Name:",16);
what = 2;
break;
}
if(what==2)
{
Move(rp,80,85); Text(rp,DefString3,strlen(DefString3));
if(edit==0) {strcpy(person[zaehler]->name,DefString3); strcpy(DefString3,"\0");}
if(edit==1)
{strcpy(person[i]->name,DefString3); strcpy(DefString3,person[i]->strasse);
suchen((char *)DefString);}
Move(rp_input,5,10); Text(rp_input,"Street: ",16);
what = 3;
break;
}
if(what==3)
{
Move(rp,80,95); Text(rp,DefString3,strlen(DefString3));
if(edit==0) {strcpy(person[zaehler]->strasse,DefString3); strcpy(DefString3,"\0");}
if(edit==1)
{strcpy(person[i]->strasse,DefString3); strcpy(DefString3,person[i]->ort);
suchen((char *)DefString);}
Move(rp_input,5,10); Text(rp_input,"Town: ",16);
what = 4;
break;
}
if(what==4)
{
Move(rp,80,105); Text(rp,DefString3,strlen(DefString3));
if(edit==0) {strcpy(person[zaehler]->ort,DefString3); strcpy(DefString3,"\0");}
if(edit==1)
{strcpy(person[i]->ort,DefString3); strcpy(DefString3,person[i]->tel);
suchen((char *)DefString);}
Move(rp_input,5,10); Text(rp_input,"Phone-Nr.: ",16);
what = 5;
break;
}
if(what==5)
{
Move(rp,80,115); Text(rp,DefString3,strlen(DefString3));
if(edit==0) {strcpy(person[zaehler]->tel,DefString3);
strcpy(DefString3,"\0");
Move(rp_input,5,10); Text(rp_input,"Tracing term:",13);
SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
strcpy(DefString,"\0");
RefreshGadgets(&tex_gad,w,NULL);
zaehler +=1;
print_anzahl();
what = 1; }
if(edit==1) {strcpy(person[i]->tel,DefString3);
suchen((char *)DefString);
goto close_in;}
break;
}
};/*switch gadgid*/ break;
};/*switch messageclass*/
} /* end while */
} /* end for */
close_in:
anderung = TRUE;
if(input_win) {CloseWindow(input_win); input_win=NULL;}
if(edit==0){SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
strcpy(DefString,"\0");
RefreshGadgets(&tex_gad,w,NULL);}
schein_request(0); /*aus*/
s();
movemouse(w->LeftEdge+150,w->TopEdge+130);
} /* end input() */
speichern(speicher_string) /* the saving */
UBYTE speicher_string[30];
{
char *hilf;
LONG anzahl = 0;
int handle;
status("Saving file ... ");
if((handle=creat(speicher_string,0))==-1)
{status("Saving-Error !!! "); de(); return(0);}
for(i=0;i<zaehler;i++)
{
anzahl = anzahl + strlen(person[i]->such_begriff)
+ strlen(person[i]->name)
+ strlen(person[i]->strasse)
+ strlen(person[i]->ort)
+ strlen(person[i]->tel)
+ 10; /* die Klammern */
}
anzahl += 2; /* for ~ und \0 */
if((platz = AllocMem(anzahl,0L))==NULL)
{status("Saving-Error !!! "); de(); return(0);}
hilf = platz;
for(i=0;i<zaehler;i++)
{
strcpy(hilf,"{");
hilf+=1;
strcat(hilf,person[i]->such_begriff);
hilf+=strlen(person[i]->such_begriff);
strcat(hilf,"}[");
hilf+=2;
strcat(hilf,person[i]->name);
hilf+=strlen(person[i]->name);
strcat(hilf,"][");
hilf+=2;
strcat(hilf,person[i]->strasse);
hilf+=strlen(person[i]->strasse);
strcat(hilf,"][");
hilf+=2;
strcat(hilf,person[i]->ort);
hilf+=strlen(person[i]->ort);
strcat(hilf,"][");
hilf+=2;
strcat(hilf,person[i]->tel);
hilf+=strlen(person[i]->tel);
strcat(hilf,"]");
hilf+=1;
}
strcat(hilf,"~\0");
get_sesam();
if(DefString4[0]!=0) {compute(DefString4);
codiere(platz,anzahl);
strcpy(DefString4,"\0"); }
write(handle,platz,anzahl);
close(handle);
if(platz) FreeMem(platz,anzahl);
anderung = FALSE; movemouse(w->LeftEdge+150,w->TopEdge+130);
DisplayBeep(NULL);
s();
return(1);
} /* end speichern() */
neu() /* delete all records */
{
if(zaehler==0) goto aff;
movemouse(150,33);
ergebnis = AutoRequest(NULL,&text4,&postext1,&negtext1,NULL,NULL,200,50);
if(ergebnis==FALSE) goto aff;
for(i=0;i<zaehler;i++)
{ if(person[i]) FreeMem(person[i],sizeof(struct Daten));
person[i] = 0;
}
for(i=0;i<MAXI;i++) person[i] = 0;
zaehler = 0;
print_anzahl();
strcpy(DefString,"\0"); RefreshGadgets(&tex_gad,w,NULL);
SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
anderung = TRUE;
aff: movemouse(w->LeftEdge+150,w->TopEdge+130);
} /* end neu() */
del() /* delete actual record */
{
char john[30];
short a;
if(zaehler==0) {movemouse(150,33);
ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
goto close_neu;}
for(i=0;i<zaehler;i++)
{ if( my_strcmp(DefString,person[i]->such_begriff)==NULL)
{
strcpy(john," Delete <");
strcat(john,person[i]->such_begriff);
strcat(john,"> ? ");
(UBYTE *) text2.IText = (UBYTE *)john;
movemouse((strlen(john)*10)-50,38);
ergebnis = AutoRequest(NULL,&text2,&postext1,&negtext1,NULL,NULL,strlen(john)*10+5,50);
movemouse(w->LeftEdge+150,w->TopEdge+130);
if(ergebnis == FALSE) goto close_neu;
if(person[i]) FreeMem(person[i],sizeof(struct Daten));
for(a=i;a<zaehler;a++) person[a] = person[a+1];
zaehler -=1; person[zaehler] = 0; /* last record = 0 */
print_anzahl();
strcpy(DefString,"\0"); RefreshGadgets(&tex_gad,w,NULL);
SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
status("Record deleted. "); de();
anderung = TRUE; return(1);
}
}
movemouse(130,33);
ergebnis = AutoRequest(NULL,&text3,&postext1,&postext1,NULL,NULL,200,50);
close_neu:
movemouse(w->LeftEdge+150,w->TopEdge+130);
return(0);
} /* end del() */
movemouse (ziel_x, ziel_y) /* moves mouse-cursor to a given position; */
int ziel_x; /* needs preferences (look at main() */
int ziel_y;
{
struct InputEvent mouse;
struct IOStdReq *ioreq;
struct MsgPort *ioport;
int pos_x = IntuitionBase->ActiveScreen->MouseX;
int pos_y = IntuitionBase->ActiveScreen->MouseY;
int dx = ziel_x - pos_x;
int dy = ziel_y - pos_y;
if (!(ioport = CreatePort (NULL, NULL))) goto weg;
if(!(ioreq = CreateStdIO(ioport))) goto weg;
if (OpenDevice ("input.device", 0L, ioreq, 0L)) {
ioreq -> io_Device = 0; goto weg;}
ioreq -> io_Command = IND_WRITEEVENT;
ioreq -> io_Flags = 0;
ioreq -> io_Length = sizeof (struct InputEvent);
ioreq -> io_Data = (APTR) &mouse;
mouse.ie_NextEvent = 0;
mouse.ie_Class = IECLASS_RAWMOUSE;
mouse.ie_TimeStamp.tv_secs = mouse.ie_TimeStamp.tv_micro = 0;
mouse.ie_Code = IECODE_NOBUTTON;
mouse.ie_Qualifier = IEQUALIFIER_RELATIVEMOUSE;
mouse.ie_X = prefs.PointerTicks * dx;
mouse.ie_Y = prefs.PointerTicks * (dy+dy); /* because HiRes ! */
if(DoIO (ioreq)) goto weg;
weg:
if (ioreq) {
if(ioreq->io_Device) CloseDevice(ioreq);
DeleteStdIO (ioreq);
}
if (ioport) DeletePort (ioport);
} /* end movemouse() */
print_anzahl() /* shows number of records */
{
SetAPen(rp,2); RectFill(rp,192,60,285,72); SetAPen(rp,1);
sprintf(Date_Buffer,"%d",zaehler); Move(rp,193,68); Text(rp,Date_Buffer,strlen(Date_Buffer));
}
decodiere(reihe,number)
UBYTE reihe[];
LONG number;
{
;
} /* end decodiere() */
codiere(reihe,number)
UBYTE reihe[];
LONG number;
{
;
} /* end codiere() */
compute(sesam)
UBYTE sesam[];
{
;
} /* end compute() */
get_sesam() /* enter the password */
{
struct RastPort *rp_sesam;
struct IntuiMessage *message2;
ULONG class2; USHORT code2;
struct Gadget *igad2;
int gadgid2;
if(!(sesam_win = (struct Window *)OpenWindow(&nw6))) { sys_info(3,"No Sesam-WINDOW !",0); return(0);}
rp_sesam = sesam_win->RPort;
SetRast(rp_sesam,2);
SetAPen(rp_sesam,0);
RectFill(rp_sesam,66,25,185,36);
DrawBorder(rp_sesam,&StrBorder5,0,0);
RefreshGadgets(&sesam_gad,sesam_win,NULL);
ActivateGadget(&sesam_gad,sesam_win,NULL);
movemouse(a_w->LeftEdge+170,a_w->TopEdge+38);
for(;;)
{
Wait((1<<sesam_win->UserPort->mp_SigBit));
while(message2 = (struct IntuiMessage *)GetMsg(sesam_win->UserPort))
{
class2 = message2->Class;
code2 = message2->Code;
ReplyMsg(message2);
igad2 = (struct Gadget *) message2->IAddress;
gadgid2 = igad2->GadgetID;
switch (class2)
{
case GADGETDOWN:
switch(gadgid2)
{
case 2: goto jesus; break;
};
case GADGETUP: goto jesus; break;
};
} /* end while */
} /* end for */
jesus:
if(sesam_win) {CloseWindow(sesam_win); sesam_win=NULL;}
return(1);
}
sys_info(a_pen,text,dauer) /* a_pen: Color of Text; */
int dauer; /* if dauer==0 : then depending on the length of text */
short a_pen;
char *text;
{
struct Window *inf_win;
struct RastPort *inf_rp;
if((new_inf_win.Width = (strlen(text)*8)+10)<190) new_inf_win.Width=190;
new_inf_win.LeftEdge = (640-new_inf_win.Width)/2;
new_inf_win.Title = (UBYTE *)"(Wo) User-Information: ";
if((inf_win =(struct Window *)OpenWindow(&new_inf_win)) == NULL) return(0);
inf_rp = inf_win->RPort;
SetAPen(inf_rp,1);
RectFill(inf_rp,2,10,new_inf_win.Width-3,26);
SetAPen(inf_rp,a_pen); SetBPen(inf_rp,1); SetDrMd(inf_rp,JAM2);
Move(inf_rp,5,21);
Text(inf_rp,text,strlen(text));
switch(dauer)
{ case 0: Delay(strlen(text)*7); break; /*von Anzahl der Buchstaben abhängig */
default: Delay(dauer); break; /* so lang wie dauer */
};
if(inf_win) CloseWindow(inf_win);
}
ende(error_nr) /* it's never to late ... */
short error_nr;
{
if((anderung==TRUE)&&(zaehler>0))
{
movemouse(190,38);
ergebnis = AutoRequest(NULL,&text5,&postext1,&negtext1,NULL,NULL,260,50);
if(ergebnis==TRUE) offne_file(1);
/* if file has been changed: save it ? */
}
AbortIO((char *) &timereq.tr_node);
if(openerror==0) CloseDevice(&timereq);
if(timerport) DeletePort(timerport);
if(zaehler>0)
{for(i=0;i<zaehler;i++)
{ if(person[i]) FreeMem(person[i],sizeof(struct Daten));}
}
if(w) CloseWindow(w);
switch(error_nr)
{case 0: sys_info(2," User Abort. ",0); break;
case 1: sys_info(3,"No DOS.library !",0); break;
case 2: sys_info(3,"No GFX.library !",0); break;
case 3: sys_info(3,"No INTUITION.library !",0); break;
case 4: sys_info(3,"No TIMER-Port/Devive !",0); break;
case 5: sys_info(3,"No Main-WINDOW !",0); break;
case 6: sys_info(3,"MEMORY-Allocation problem !",0); break;
case 7: sys_info(3,"No HiRes-Screen-Resolution !",0); break;
};
if(DosBase) CloseLibrary(DosBase);
if(GfxBase) CloseLibrary(GfxBase);
if(IntuitionBase) CloseLibrary(IntuitionBase);
exit(1);
} /* end ende() */